package com.design.pattern.iterator;

/**
 * 自定义集合接口
 */
public interface CustomCollection<T> {

    /**
     * 获取容器的迭代器
     * @return 操作结果
     */
    CustomIterator<T> iterator();

    /**
     * 添加一个元素
     * @param t 元素
     * @return 操作结果
     */
    boolean add(T t);

    /**
     * 移除一个元素
     * @param t 元素
     * @return 操作结果
     */
    boolean remove(T t);

    /**
     * 获取当前元素
     * @param t 元素
     * @return 元素
     */
    default T get(T t) {
        throw new UnsupportedOperationException();
    }

    /**
     * 查找指定位置的元素
     * @return 元素
     */
    default T indexOf(int p) {
        throw new UnsupportedOperationException();
    }
    default int at(T t){
        throw new UnsupportedOperationException();
    }
    /**
     * 更新元素
     * @param t1 老元素
     * @param t2 新元素
     * @return 操作结果
     */
    boolean update(T t1, T t2);
    int size();
}
